# 元组（tuple）与列表类似，但元组是不可变的，可简单将其看作是不可变的列表，元组常用于保存不可修改的内容。
# 元组中所有元素都放在一个小括号 () 中，相邻元素之间用逗号 , 分隔，如下所示：
t = (True, 1, 2.0, 'abc')
# 访问
# 与访问列表中元素类似，如下所示：
print(type(t))
print(t[3])
# ➢ 修改
# 元组中元素不能被修改，我们要用重新赋值的方式操作，如下所示：
# t[0] = False
t = (1, 2.0, 'abc',)
print(t[0])
# ➢ 删除
# 元组中的元素不能被删除，我们只能删除整个元组，如下所示
# del t
print(t[0])
print(len(t))
# print(max(t))
# print(min(t))
tr = (False, True)
print(max(tr))

# ③ tuple()
# 将列表转换为元组，使用如下所示：
list1 = [1, 2, 3]
print(type(list1))
list2 = tuple(list1)
print(type(list2))

# 元组的创建
tuple1 = (1, 2, 3, True, 'hello')
print(tuple1)
print(type(tuple1))
list1 = [1]
print(list1[0])
print(tuple1[0])
# 元组中只有一个元素时，必须以逗号结尾，否则会报错
tuple2 = (1,)
print(type(tuple2))
tuple3 = tuple()  # tuple()转换类型
print(type(tuple3))
tuple4 = ()
print(type(tuple4))
print('-' * 40)
# str ->tuple
tuple5 = tuple("hello")
print(tuple5)
# list->tuple
tuple6 = tuple([1, 2, 3, 4])
print(tuple6)
# tuple->list
list13 = list((1, 2, 3, 4))
print(list13)
# tuple->str
list14 = str((1, 2, 3, 4))
print(type(list14))
print(list14)

# 序列的通用的操作
print('-' * 40)
tuple18 = (1, 2, 3, True, 'hello')

# 索引
print(tuple18[-1])
# 切片
print(tuple18[::-1])
# +
print(tuple18 + ('a', 'b', 'c'))
# *
print(tuple18 * 2)
# not in
print('a' not in tuple18)
del tuple18
# 元组常用方法
print('-' * 40)
tuple18 = (1, 2, 3, True, 'hello')
# print(tuple18.count(1))
# print(tuple18)
# # 用于查找指定元素在元组中的首次出现位置（即索引）。
# todo print(tuple18.index(True))
# 元组的遍历
print('-' * 10)
for i in tuple18:
    print(i)
#     enumerate列举
for i, j in enumerate(tuple18):
    print(i, j)
for i in range(len(tuple18)):
    print(i, tuple18[i])
